package org.finesys.system.service;

import cn.hutool.core.lang.tree.Tree;
import org.finesys.common.mp.core.service.BaseService;
import org.finesys.system.api.entity.SysMenu;

import java.util.List;
import java.util.Set;

public interface SysMenuService extends BaseService<SysMenu> {
    /**
     * 通过角色编号查询URL 权限
     *
     * @param roleId 角色ID
     * @return 菜单列表
     */
    Set<SysMenu> findMenuByRoleId(Long roleId);


    /**
     * 保存路由信息
     *
     * @param sysMenu
     */
    Boolean saveMenu(SysMenu sysMenu);


    /**
     * 更新路由
     */
    Boolean updateMenu(SysMenu sysMenu);

    /**
     * 删除路由
     */
    Boolean removeMenuById(Long id);


    /**
     * 构建树
     *
     * @param parentId 父节点ID
     * @param menuName 菜单名称
     * @return
     */
    List<Tree<Long>> treeMenu(Long parentId, String menuName, String type);

    /**
     * 查询菜单
     *
     * @param voSet
     * @param parentId
     * @return
     */
    List<Tree<Long>> filterMenu(Set<SysMenu> voSet, String type, Long parentId);

    /**
     * 同步菜单缓存
     */
    void sync();
}
